package com.wjm.api;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

/**
 * Data:2022年07月05日
 * Author:wjm
 * Content: 泛型
 *
 *
 *   collection.add(100); //其实它存入的是一个包装类对象 new Integer(100);
 */
public class Test {
    public static void main(String[] args) {
        /*
        * 把迭代输出的对象转换为String类型时，不会报错，因为它用泛型声明了一个存放字符串的集合
        * */
        method2();
        System.out.println("------------------------------------");
        /*
         * 把迭代输出的对象转换为String类型时，会报错，java.lang.ClassCastException(类型转换异常)，
         * 因为包装类对象 new Integer(100)不能转换为Steing类型
         * */
        method1();
    }

    private static void method2() {
        //创建一个存放字符串的集合
        Collection<String> collection = new HashSet();
        collection.add("java");
        collection.add("c++");
        collection.add("c语言");
        collection.add("python");
        //collection.add(100); 其实它存入的是一个包装类对象 new Integer(100); 编译报错，泛型指定的类型是String，Integer是不被接收的
        collection.add("100");
        System.out.println(collection);

        Iterator iterator =collection.iterator();
        while (iterator.hasNext()){
            //把迭代输出的对象转换为String类型，并输出长度
            String s = (String) iterator.next();//不会报错
            System.out.println(s.length());
        }
    }

    private static void method1() {
        //创建一个集合对象
        Collection collection = new HashSet();
        collection.add("java");
        collection.add("c++");
        collection.add("c语言");
        collection.add("python");
        collection.add(100); //其实它存入的是一个包装类对象 new Integer(100);
        System.out.println(collection);

        Iterator iterator =collection.iterator();
        while (iterator.hasNext()){
            //把迭代输出的对象转换为String类型，并输出长度
            //会报错 java.lang.ClassCastException(类型转换异常)，因为包装类对象 new Integer(100)不能转换为Steing类型
            String s = (String) iterator.next();
            System.out.println(s.length());
        }
    }
}
